package com.example.Servlet;

import com.example.Service.NewsService;
import com.example.pojo.News;
import com.google.gson.Gson;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@WebServlet(name = "InfoServlet", value = "/InfoServlet")
public class InfoServlet extends HttpServlet {
    private String message;

    public void init() {
        message = "Hello World!";
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("application/json;charset=utf-8");
        response.setCharacterEncoding("UTF-8");
        //        response.setContentType("text/html");

        String id = request.getParameter("id");
        NewsService newsService = new NewsService();
        Map<String, Object> map = new HashMap<>();
        try {
            if (id == null || id.trim().isEmpty()) {
                map.put("code", 400);
                map.put("msg", "新闻ID不能为空");
            } else{
                int newsId = Integer.parseInt(id);
            //1.增加新闻浏览量
            newsService.updateNewsViews(newsId);
            //2.获取新闻详情
            News n = newsService.getNewsInfo(newsId);

            if (n == null) {
                map.put("code", 404);
                map.put("msg", "新闻不存在");
            } else {

                //新闻详情的排版
                String rawContent = n.getNewsContent(); // 获取数据库中的原始文本
                String[] paragraphs = rawContent.split("\r?\n"); // 兼容不同换行符
                StringBuilder contentWithP = new StringBuilder();
                for (String para : paragraphs) {
                    if (!para.trim().isEmpty()) {
                        contentWithP.append("<p>").append(para).append("</p>");
                    }
                }
                // 3. 将处理后的内容设置回查询到的对象
                n.setNewsContent(contentWithP.toString());
            }
                //新闻详情图片
                // 假设数据库中存储的是相对路径（如"uploads/1.jpg"）
                String relativePath = n.getNewsImg(); // 从数据库获取相对路径
                // 拼接完整URL（根据项目部署路径动态生成）
                String baseUrl = "http://localhost:8080/mydemo_war_exploded/images/";
                String fullImgUrl = baseUrl + relativePath;
//        n.setNewsImgs(fullImgUrl); // 设置完整路径，返回给前端

// 后端处理无图片的情况
                if (relativePath == null || relativePath.trim().isEmpty()) {
                    n.setNewsImg(""); // 无图片时返回空字符串
                } else {
                    // 有图片时拼接URL（之前的正确逻辑）
                    n.setNewsImg(fullImgUrl);
                }

                //响应给前端，JSON数据
//        Map<String,Object> map=new HashMap<>();
                map.put("code", 200);
                map.put("msg", "查询成功");
                map.put("data", n);

            }
        } catch (NumberFormatException e) {
            map.put("code", 400);
            map.put("msg", "新闻ID格式错误");
        } catch (Exception e) {
            map.put("code", 500);
            map.put("msg", "服务器错误"+ e.getMessage());
            e.printStackTrace();
        }
        Gson gson = new Gson();
        String json= gson.toJson(map);
        response.getWriter().append(json);
    }
        public void destroy() {
    }
}